The slow access time, of the order of 5-10 ms, for an input/output (IO) transaction performed on a disk has led to the need for a caching system between a host generating the IO transaction and the disk. A cache, a fast access time medium, stores a portion of the data contained in the disk. The IO transaction is first routed to the cache, and if the data required by the transaction exists in the cache, it may be used without accessing the disk.
One goal of an efficient caching system is to achieve a high “hit” ratio, where a high proportion of the data requested by IO transactions already exists in the cache, so that access to the disk is minimized. Other desirable properties of an efficient caching system include scalability, the ability to maintain redundant caches and/or disks, and relatively few overhead management transactions.
U.S. Pat. No. 5,694,576 to Yamamoto, et al., whose disclosure is incorporated herein by reference, describes a method for controlling writing from a cache to a disk by adding record identification information to a write request. The added information enables the cache to decide whether data written to the cache should or should not be written to the disk.
U.S. Pat. No. 6,457,102 to Lambright, et al., whose disclosure is incorporated herein by reference, describes a system for storing data in a cache memory that is divided into a number of separate portions. Exclusive access to each of the portions is provided by software or hardware locks. The system may be used for choosing which data is to be erased from the cache in order to make room for new data.
U.S. Pat. No. 6,434,666 to Takahashi, et al., whose disclosure is incorporated herein by reference, describes a caching system having a plurality of cache memories, and a memory control apparatus that selects the cache memory to be used. The memory control apparatus selects the cache so as to equalize use of the cache memories.
U.S. Pat. No. 6,490,615 to Dias, et al., whose disclosure is incorporated herein by reference, describes a scalable cache having cache nodes for storage servers. On receipt of a read request, the cache nodes serve the request or communicate with each other to cooperatively serve the request.